package es.nadalgoyo.frikiquest;

import android.os.Bundle;
import android.widget.TextView;
import es.nadalgoyo.frikiquest.action.ActionTema;
import es.nadalgoyo.frikiquest.control.TextButton;
import es.nadalgoyo.frikiquest.control.style.Fonts;
import es.nadalgoyo.frikiquest.dispatcher.RespuestaDispatcher;
import es.nadalgoyo.frikiquest.util.Constantes;
import es.nadalgoyo.frikiquest.util.Util;
import es.nadalgoyo.frikiquest.vo.parcelable.TemaParcelable;
import es.nadalgoyo.frikiquest.R;
import es.sergionadal.mvc.dispatcher.exception.DispatcherException;

public class TemaActivity extends FrikiTrivialActivity {

	private TextView textTema, texto, textCredito, textCreditoApuesta;

	private TextButton txtApuesta;

	private TemaParcelable tema;

	public static final String TEMA = "temaId";

	public static final String APUESTA = "tema";

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tema);

		tema = getBundle().getParcelable(ActionTema.TEMA);

		texto = (TextView) findViewById(R.id.TxtApuesta);
		texto.setTypeface(Fonts.getLordOfTheRings(getAssets()));

		textTema = (TextView) findViewById(R.id.TxtTemaApuesta);
		textTema.setTypeface(Fonts.getLordOfTheRings(getAssets()));
		textTema.setText(tema.getTexto());
		textTema.setTextAppearance(getApplicationContext(), R.style.boldText);

		textCredito = (TextView) findViewById(R.id.TxtCredito);
		textCredito.setTypeface(Fonts.getLordOfTheRings(getAssets()));

		textCreditoApuesta = (TextView) findViewById(R.id.TxtCreditoApuesta);
		textCreditoApuesta.setTypeface(Fonts.getLordOfTheRings(getAssets()));
		textCreditoApuesta.setText(String.valueOf(getPuntuacion()));
		textCreditoApuesta.setTextAppearance(getApplicationContext(),
				R.style.boldText);

		txtApuesta = (TextButton) findViewById(R.id.CtlPuntosApuesta);
		txtApuesta.setActivity(this);
		txtApuesta.setButtonText("Apostar");
		txtApuesta.setIsNumeric(true);

		txtApuesta.inicializar();

		txtApuesta.addOnClickListener(new TextButton.OnClickListener() {
			@Override
			public void onClick() {
				String strApuesta = txtApuesta.getTextEdit().getText()
						.toString();
				Integer apuesta = Integer
						.valueOf(strApuesta.trim().equals("") ? "0"
								: strApuesta);
				if (strApuesta != null && !strApuesta.trim().equals("")
						&& apuesta > 0) {

					if (apuesta > getPuntuacion()) {
						Util.showErrorMensaje(
								TemaActivity.this,
								"La apuesta no puede ser superior a los creditos restantes.",
								false);
					} else {
						Bundle bundle = new Bundle();
						bundle.putString(TEMA, tema.getId());
						bundle.putInt(APUESTA, apuesta);
						bundle.putInt(Constantes.NUMERO_APUESTAS,
								getNumeroApuestas());
						RespuestaDispatcher dispatcher = new RespuestaDispatcher(
								TemaActivity.this, bundle,
								RespuestaDispatcher.RESPUESTA_ISOK);
						dispatcher.setPuntuacion(getPuntuacion());

						try {
							dispatcher.dispatch();
						} catch (DispatcherException e) {
							e.printStackTrace();
							Util.showErrorMensaje(TemaActivity.this,
									e.getMessage(), true);
						}
					}
				} else {
					Util.showErrorMensaje(TemaActivity.this,
							"La apuesta debe ser superior a 0.", false);
				}

			}
		});

	}

	private int getNumeroApuestas() {
		return getBundle().getInt(Constantes.NUMERO_APUESTAS) - 1;
	}

}